#ifndef CAM_H
#define CAM_H

#include <GL/gl.h>
#include <iostream>
#include "Util.h"
#include <GL/glut.h>
#include <GL/glu.h>

class Camera
{
	private:
		/** brief: Position vector */
		GLdouble _pos[3];
		/** brief: Look vector */
		GLdouble _look[3];
		/** brief: Up vector */
		GLdouble _up[3];
	public:
		Camera (GLdouble *position, GLdouble *look, GLdouble *up);	
		GLdouble * pos();
		GLdouble pos_x() const;
		GLdouble pos_y() const;
		GLdouble pos_z() const;
		GLdouble * look();
		GLdouble look_x() const;
		GLdouble look_y() const;
		GLdouble look_z() const;
		GLdouble * up();
		GLdouble up_x() const;
		GLdouble up_y() const;
		GLdouble up_z() const;
		void set_pos(GLdouble, GLdouble, GLdouble);
		void set_pos_x(GLdouble);
		void set_pos_y(GLdouble);
		void set_pos_z(GLdouble);
		void set_up(GLdouble, GLdouble, GLdouble);
		void set_up_x(GLdouble);
		void set_up_y(GLdouble);
		void set_up_z(GLdouble);
		void set_look(GLdouble, GLdouble, GLdouble);
		void set_look_x(GLdouble);
		void set_look_y(GLdouble);
		void set_look_z(GLdouble);
		void place();
};
#endif
